# 字典关键字：dict
"""
dict1 = {"name":"suki","age":19,"address":"辽宁沈阳",'sex':"女"}

# 修改字典
dict1['name'] = "刘超班长"
print(dict1)

# 新增一组key value。直接赋值，如果有的话则是修改，没有则是新增
dict1['phone'] = '14927686211'
print(dict1)

# 删除
dict1.pop('age')
print(dict1)
"""

# 字典中不允许有重复的key
"""
dict2 = {"name":"suki","name":"班长","age":109}
print(dict2)        # 会以最后出现的key value为主
"""

# 字典的内置方法
dict3 = {"name":"zhangsan",'age':19,'sex':"男",'address':"shenyang","phoneNumber":"17897822231"}

# 合并字典：将dict4合并到dict3里面
"""
dict4 = {"cls":"1199"}
dict3.update(dict4)
print(dict3)
"""

# 查看某一个key、value
# print(dict3.get("name"))

# 返回字典的key与value是一个元组，元组外面是列表
"""
print(dict3.items())  # dict_items[('name','zhangsan'),...]
k_vList = list(dict3.items())
print(k_vList)
"""

# 获取所有的value值，为一个列表
"""
print(dict3.values())
print(list(dict3.values()))
"""

# 获取所有的key值，为一个列表
"""
print(dict3.keys())
print(list(dict3.keys()))
"""

# 遍历字典，直接访问会是遍历key
"""
for i in dict3:
    print(i)
"""

# 遍历字典，配合内置方法：items()
"""
for key,value in dict3.items():
    print(key,value)
"""

# 遍历字典，配合内置方法：keys()
"""
for i in dict3.keys():
    print(i)
"""

# 遍历字典，配合内置方法:values()
"""
for i in dict3.values():
    print(i)
"""

# 图书管理系统：
# 新增图书
# 修改图书
# 查询图书：精确查询、模糊查询
# 删除图书
# 退出系统
result = {}
while True:
    print("欢迎来到图书管理系统！")
    print("① 新增图书")
    print("② 修改图书")
    print("③ 查询图书")
    print("④ 删除图书")
    print("⑤ 退出系统")
    r = input("请输入你要操作的序号：")
    if r == '1':
        book_name = input("请输入图书的名称：")
        # 如果说这个图书的名字不在字典的某一个key里
        if book_name not in result:
            name = input("请输入图书作者：")
            createTime = input("请输入图书创建时间：")
            bookType = input("请输入图书类型：")
            # {"三国":{"图书作者":"刘超","图书创建时间":"2025-7-26","图书类型":"历史"}}
            result[book_name] = {"图书作者":name,"图书创建时间":createTime,"图书类型":bookType}
        # 如果这个图书在字典里面了
        else:
            print(f"您要新增的：{book_name}，已经存在了，新增失败！")
    elif r == '2':
        # 先要输入你要改哪个
        # 1.1、存在这个书
        # 1.2、不存在这个书
        # 再去输入你要改成什么样
        old_bookName = input("请输入你要修改的图书：")
        # 判断这个书在不在
        if old_bookName in result:
            # 输入你要改成什么样子
            book_name = input("请输入图书的名称：")
            name = input("请输入图书作者：")
            createTime = input("请输入图书创建时间：")
            bookType = input("请输入图书类型：")
            # 删掉原来的哪一个书的信息，再加上新的（变相修改，反正结果是对的）
            # 通过内置方法，输入key删掉这一对key和value
            result.pop(old_bookName)
            #再去新增
            result[book_name] = {"图书作者":name,"图书创建时间":createTime,"图书类型":bookType}
            print(f"修改成功！原来的图书名称为：{old_bookName}，修改后为：{book_name}")
        # 反之则是这个书不存在，不存在当然没办法修改了
        else:
            print("这个图书不存在！修改失败！")
        pass
    # 查询图书
    elif r == '3':
        search = input("精确查询请输入1；模糊查询请输入2")
        if search == '1':
            book = input("请输入你要查看的图书名称全称：")
            if book in result:
                print(result[book])
            else:
                print("图书信息不存在！查询失败！")
        # 模糊查询
        elif search == '2':
            #比如说，现在图书里面有 三国杀、武林外传
            # 你输入三国  就会出现三国杀，输入武林，就会返回武林
            book = input("请输入你要查看的图书名称部分：")
            # 收集所有存在的key值，放到列表里
            keys = []
            # 目标，去遍历判断
            target = False
            for key,value in result.items():
                if book in key:
                    # 如果找到有一个符合条件的，就把目标值变成True
                    target =True
                    # 加进来目标键值列表里
                    keys.append(key)
            if target: # 可以省略 ==True，直接判断就是True
                for key in keys:
                    print(f"当前查看图书名称是：{key}，图书信息为：{result[key]}")
            else:
                print("查看的图书不存在，查看失败！")
    # 用户输入4，是要删除的书
    elif r == '4':
        # 输入要删除的图书名称
        book_name = input("输入要删除的图书名称：")
        # 如果图书在这个字典里面
        if book_name in result:
            # 使用pop内置方法，将图书删除掉
            result.pop(book_name)
            # 打印：图书删除成功了
            print("要删除的：%s图书已经删除成功！"%book_name)
        # 反之就是图书不存在
        else:
            # 打印：删除失败！
            print("图书不存在！删除失败！")
    elif r == '5':
        print("欢迎您下次光临！")
        print("再见！")
        break
        pass
"""
字典总结：
1、字典是可变的数据类型，可以进行增删改
2、字典是通过key和value来存储的
3、字典中的key不能重复，如果重复，取最后一次出现的key、value、
4、key值必须是不可变的数据类型才可以（str、tuple、int、float）
    【正确的】
    dict1 = {"name":"suki"}
    dict2 = {(1,2,3):"19897822"}
    dict3 = {1:"tiki"}
    dict3_1 = {1.1:"tiki"}
    【错误的】
    dict4 = {[1,2,3]:"suki"}
    dict5 = {{1,2,3}:"tiki"}
    dict6 = {{"name":"tiki"}:"187977287"}
"""




